#ifndef TEXTEDITOR_H
#define TEXTEDITOR_H

#include "resizableimagetextedit.h"
#include <QWidget>
#include <QToolBar>
#include <QAction>
#include <QTextTable>
#include <QSpinBox>
#include <QLabel>
#include <QVBoxLayout>
#include <memory> // 包含智能指针头文件

class TextEditor : public QWidget
{
    Q_OBJECT

public:
    TextEditor(QWidget *parent = nullptr);
    ~TextEditor() override;

private slots:
    void alignLeft();
    void alignCenter();
    void alignRight();
    void insertImage();
    void insertTable();
    void applyTableResize();
    void updateTableResizeControls();

private:
    // 使用智能指针管理非视觉资源
    std::unique_ptr<ResizableImageTextEdit> textEdit;
    std::unique_ptr<QToolBar> toolBar;
    
    // Qt的动作对象通常由父对象管理，不需要智能指针
    QAction *leftAlignAction;
    QAction *centerAlignAction;
    QAction *rightAlignAction;
    QAction *insertImageAction;
    QAction *insertTableAction;
    
    // 表格调整控件
    std::unique_ptr<QLabel> columnWidthLabel;
    std::unique_ptr<QSpinBox> columnWidthSpinBox;
    std::unique_ptr<QLabel> rowHeightLabel;
    std::unique_ptr<QSpinBox> rowHeightSpinBox;
    std::unique_ptr<QPushButton> applyResizeButton;
    std::unique_ptr<QWidget> tableResizeWidget;
    
    QTextTable *getSelectedTable();
    void setupTableResizeControls();
    int getCurrentTableRow();
    int getCurrentTableColumn();
};

#endif // TEXTEDITOR_H